package com.binhthuan.catechist.client.dto;

import name.pehl.piriti.client.json.Json;
import name.pehl.piriti.client.json.JsonReader;
import name.pehl.piriti.client.json.JsonWriter;

import com.google.gwt.core.client.GWT;

/**
 * @author Giang Đinh - Thông tin về 1 ngày học, tương ứng với bảng
 *         <b>thoi_khoa_bieu</b> trong cơ sở dữ liệu.
 */
public class Schedule {

    public interface ScheduleReader extends JsonReader<Schedule> {
    }
    public interface ScheduleWriter extends JsonWriter<Schedule> {
    }

    public static ScheduleReader READER = GWT.create(ScheduleReader.class);
    public static ScheduleWriter WRITER = GWT.create(ScheduleWriter.class);

    /**
     * Mã thời khóa biểu.
     */
    @Json
    private Integer id;
    
    /**
     * Lớp học.
     */
    @Json
    private DoctrineClass doctrineClass;
    
    /**
     * Ngày học.
     */
    @Json
    private Date day;

    /**
     * Tên bài học.
     */
    @Json
    private String title;
    
    /**
     * Nội dung học.
     */
    @Json
    private String content;
    
    /**
     * Tình trạng của buổi học.
     */
    @Json
    private ScheduleStatus status;
    
    /**
     * Ghi chú.
     */
    @Json
    private String comment;
    
    public Schedule() {
        
    }

    /**
     * Lấy mã thời khóa biểu.
     * @return Mã thời khóa biểu.
     */
    public Integer getId() {
        return id;
    }

    /**
     * Gán mã thời khóa biểu.
     * @param id
     *            Mã thời khóa biểu.
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Lấy lớp học.
     * @return Lớp học.
     */
    public DoctrineClass getDoctrineClass() {
        return doctrineClass;
    }

    /**
     * Gán lớp học.
     * @param doctrineClass
     *            Lớp học.
     */
    public void setDoctrineClass(DoctrineClass doctrineClass) {
        this.doctrineClass = doctrineClass;
    }

    /**
     * Lấy nội dung buổi học.
     * @return Nội dung buổi học.
     */
    public String getContent() {
        return content;
    }

    /**
     * Gán nội dung buổi học.
     * @param content
     *            Nội dung buổi học.
     */
    public void setContent(String content) {
        this.content = content;
    }

    /**
     * Lấy tình trạng của buổi học.
     * @return Tình trạng của buổi học.
     */
    public ScheduleStatus getStatus() {
        return status;
    }

    /**
     * Gán tình trạng của buổi học.
     * @param status
     *            Tình trạng của buổi học.
     */
    public void setStatus(ScheduleStatus status) {
        this.status = status;
    }

    /**
     * Lấy ghi chú.
     * @return Ghi chú.
     */
    public String getComment() {
        return comment;
    }

    /**
     * Gán ghi chú.
     * @param comment
     *            Ghi chú.
     */
    public void setComment(String comment) {
        this.comment = comment;
    }

    /**
     * Lấy ngày học.
     * @return Ngày học.
     */
    public Date getDay() {
        return day;
    }

    /**
     * Gán ngày học.
     * @param day
     *            Ngày học.
     */
    public void setDay(Date day) {
        this.day = day;
    }
    
    /**
     * Lấy tên bài học.
     * @return Tên bài học.
     */
    public String getTitle() {
        return title;
    }

    /**
     * Gán tên bài học.
     * @param title Tên bài học.
     */
    public void setTitle(String title) {
        this.title = title;
    }
}
